<!DOCTYPE HTML>

<html lang="en">
<head>

<title>OpenSamlInitializationService (spring-security-docs 5.6.3 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../../jquery/jquery-3.5.1.js"></script>
<script type="text/javascript" src="../../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="OpenSamlInitializationService (spring-security-docs 5.6.3 API)";
        }
    }
    catch(err) {
    }
//-->
var data = {"i0":9,"i1":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../../";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">

<div class="topNav"><a id="navbar.top">

</a>
<div class="skipNav"><a href="OpenSamlInitializationService.html#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">

</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="OpenSamlInitializationService.html#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="OpenSamlInitializationService.html#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">

</a></div>

</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>

<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.springframework.security.saml2.core</a></div>
<h2 title="Class OpenSamlInitializationService" class="title">Class OpenSamlInitializationService</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>org.springframework.security.saml2.core.OpenSamlInitializationService</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<pre>public final class <span class="typeNameLabel">OpenSamlInitializationService</span>
extends java.lang.Object</pre>
<div class="block">An initialization service for initializing OpenSAML. Each Spring Security
OpenSAML-based component invokes the <a href="OpenSamlInitializationService.html#initialize()"><code>initialize()</code></a> method at static
initialization time.
<a href="OpenSamlInitializationService.html#initialize()"><code>initialize()</code></a> is idempotent and may be safely called in custom classes that
need OpenSAML to be initialized in order to function correctly. It's recommended that
you call this <a href="OpenSamlInitializationService.html#initialize()"><code>initialize()</code></a> method when using Spring Security and OpenSAML
instead of OpenSAML's <code>InitializationService.initialize()</code>.
The primary purpose of <a href="OpenSamlInitializationService.html#initialize()"><code>initialize()</code></a> is to prepare OpenSAML's
<code>XMLObjectProviderRegistry</code> with some reasonable defaults. Any changes that
Spring Security makes to the registry happen in this method.
To override those defaults, call <a href="OpenSamlInitializationService.html#requireInitialize(java.util.function.Consumer)"><code>requireInitialize(Consumer)</code></a> and change the
registry:
<pre>        static {
        OpenSamlInitializationService.requireInitialize((registry) -&gt; {
                registry.setParserPool(...);
                registry.getBuilderFactory().registerBuilder(...);
        });
  }
 </pre>
<a href="OpenSamlInitializationService.html#requireInitialize(java.util.function.Consumer)"><code>requireInitialize(Consumer)</code></a> may only be called once per application.
If the application already initialized OpenSAML before
<a href="OpenSamlInitializationService.html#requireInitialize(java.util.function.Consumer)"><code>requireInitialize(Consumer)</code></a> was called, then the configuration changes will
not be applied and an exception will be thrown. The reason for this is to alert you to
the fact that there are likely some initialization ordering problems in your
application that would otherwise lead to an unpredictable state.
If you must change the registry's configuration in multiple places in your application,
you are expected to handle the initialization ordering issues yourself instead of
trying to call <a href="OpenSamlInitializationService.html#requireInitialize(java.util.function.Consumer)"><code>requireInitialize(Consumer)</code></a> multiple times.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>5.4</dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">

<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">

</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="OpenSamlInitializationService.html#initialize()">initialize</a></span>()</code></th>
<td class="colLast">
<div class="block">Ready OpenSAML for use and configure it with reasonable defaults.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="OpenSamlInitializationService.html#requireInitialize(java.util.function.Consumer)">requireInitialize</a></span>&#8203;(java.util.function.Consumer&lt;org.opensaml.core.xml.config.XMLObjectProviderRegistry&gt;&nbsp;registryConsumer)</code></th>
<td class="colLast">
<div class="block">Ready OpenSAML for use, configure it with reasonable defaults, and modify the
<code>XMLObjectProviderRegistry</code> using the provided <code>Consumer</code>.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">

</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">

<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">

</a>
<h3>Method Detail</h3>
<a id="initialize()">

</a>
<ul class="blockList">
<li class="blockList">
<h4>initialize</h4>
<pre class="methodSignature">public static&nbsp;boolean&nbsp;initialize()</pre>
<div class="block">Ready OpenSAML for use and configure it with reasonable defaults.
Initialization is guaranteed to happen only once per application. This method will
passively return <code>false</code> if initialization already took place earlier in the
application.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>whether or not initialization was performed. The first thread to initialize
OpenSAML will return <code>true</code> while the rest will return <code>false</code>.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../Saml2Exception.html" title="class in org.springframework.security.saml2">Saml2Exception</a></code> - if OpenSAML failed to initialize</dd>
</dl>
</li>
</ul>
<a id="requireInitialize(java.util.function.Consumer)">

</a>
<ul class="blockListLast">
<li class="blockList">
<h4>requireInitialize</h4>
<pre class="methodSignature">public static&nbsp;void&nbsp;requireInitialize&#8203;(java.util.function.Consumer&lt;org.opensaml.core.xml.config.XMLObjectProviderRegistry&gt;&nbsp;registryConsumer)</pre>
<div class="block">Ready OpenSAML for use, configure it with reasonable defaults, and modify the
<code>XMLObjectProviderRegistry</code> using the provided <code>Consumer</code>.
Initialization is guaranteed to happen only once per application. This method will
throw an exception if initialization already took place earlier in the application.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>registryConsumer</code> - the <code>Consumer</code> to further configure the
<code>XMLObjectProviderRegistry</code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../Saml2Exception.html" title="class in org.springframework.security.saml2">Saml2Exception</a></code> - if initialization already happened previously or if OpenSAML
failed to initialize</dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>

<footer role="contentinfo">
<nav role="navigation">

<div class="bottomNav"><a id="navbar.bottom">

</a>
<div class="skipNav"><a href="OpenSamlInitializationService.html#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">

</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="OpenSamlInitializationService.html#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="OpenSamlInitializationService.html#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">

</a></div>

</nav>
</footer>
<script>if (window.parent == window) {(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create', 'UA-2728886-23', 'auto', {'siteSpeedSampleRate': 100});ga('send', 'pageview');}</script><script defer src="https://static.cloudflareinsights.com/beacon.min.js/v652eace1692a40cfa3763df669d7439c1639079717194" integrity="sha512-Gi7xpJR8tSkrpF7aordPZQlW2DLtzUlZcumS8dMQjwDHEnw9I7ZLyiOj/6tZStRBGtGgN6ceN6cMH8z7etPGlw==" data-cf-beacon='{"rayId":"7040e781189a97cf","token":"bffcb8a918ae4755926f76178bfbd26b","version":"2021.12.0","si":100}' crossorigin="anonymous"></script>
</body>
</html>
